home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / world.bas < prev    next >
BASIC Source File  |  1988-11-09  |  9KB  |  229 lines

  1. 5 KEY OFF
  2. 10 LN=0 :W=3 :S$=" SECTOR ":SX$="="
  3. 15 WIDTH 40 :NC=10: ND=5: NS=4
  4. 20 DIM A(NC,10),C(NC,10),N$(NC),D$(ND),L$(NS)
  5. 30 DIM TA(5),TC(5),DA(5,5),DC(5,5),XX(5)
  6. 40 DATA "N.AMERICA","AUSTRALIA","S.AMERICA","RUSSIA","JAPAN","AFRICA"
  7. 50 DATA "KOREA","CHINA","GREENLAND","ENGLAND"
  8. 60 DATA "TROOPS","PLANES","ARTILLARY","TANKS","MISSLES"
  9. 70 DATA "NORTH","SOUTH","EAST","WEST"
  10. 80 FOR X=1 TO NC : READ N$(X) : NEXT X
  11. 90 FOR I= 1 TO ND: READ D$(I) : NEXT I
  12. 100 FOR I= 1 TO NS:READ L$(I) : NEXT I
  13. 101 DATA .9,200,75,100,0
  14. 102 DATA .001,1.1,.01,.01,.5
  15. 103 DATA .01,1.1,.01,.01,.5
  16. 104 DATA .005,3,1,1.1,2
  17. 105 DATA .001,1,.25,.3,1
  18. 106 FOR IA=1 TO 5
  19. 107 FOR ID=1 TO 5
  20. 108 READ WT(IA,ID)
  21. 109 NEXT ID
  22. 110 NEXT IA
  23. 119 REM=======================================================================
  24. 120 REM                         INITIALIZE VALUES
  25. 130 REM=======================================================================
  26. 135 X=VAL(RIGHT$(TIME$,1)): RANDOMIZE X
  27. 140 FOR I=1 TO NC: C(I,1)=INT(5000*RND)*10: NEXT I
  28. 150 FOR I=1 TO NC
  29. 160 FOR J=2 TO ND: C(I,J)=25+INT(50*RND): NEXT J
  30. 170 NEXT I
  31. 180 FOR I=1 TO NC
  32. 190 FOR X=6 TO 10 : C(I,X)=INT(4*RND)+1 :NEXT X
  33. 200 NEXT I
  34. 210 FOR X=1 TO 5
  35. 220 FOR J=1 TO 10
  36. 230 A(X,J)=C(X,J) : C(X,J)=0
  37. 240 NEXT J
  38. 250 NEXT X
  39. 260 REM====================================================================
  40. 270 REM                         START GAME
  41. 280 REM====================================================================
  42. 290 COLOR 0,7 : CLS:PRINT "WORLD CONQUEST GAME"
  43. 300 PRINT "COPYRIGHT 6/1/82":PRINT "BY Dorn W. Stickle "
  44. 301 PRINT STRING$(40,SX$)
  45. 310 FOR I=1 TO 3000: NEXT I
  46. 320 Y6=Y6+1
  47. 330 REM--------------------------SELECT MANUEVER
  48. 340 SCREEN 1:COLOR 9,7:CLS:PRINT "                 AVAILABLE MANUEVERS
  49. 350 PRINT
  50. 360 PRINT
  51. 370 PRINT "1.      DISPLAY ALLIES DEFENSE STATUS
  52. 380 PRINT "2.      TRANSPORT DEFENSES
  53. 390 PRINT "3.      REVIEW GLOBAL STATUS
  54. 400 PRINT "4.      SPY MISSION
  55. 410 PRINT "5.      ATTACK ANOTHER COUNTRY
  56. 420 PRINT
  57. 430 PRINT
  58. 440 PRINT
  59. 450 INPUT "MANUEVER ";M
  60. 460 IF M>5 OR M<1 THEN 340
  61. 470 ON M GOTO 1000,2000,3000,4000,5000
  62. 1000 REM=====================================================================
  63. 1010 REM                        DISPLAY COUNTRY STATUS
  64. 1020 REM=====================================================================
  65. 1030 CLS:COLOR 11,7:PRINT TAB(35);"LIST OF COUNTRIES":PRINT :PRINT :PRINT :PRINT
  66. 1040 FOR I= 1 TO 10
  67. 1050 PRINT "   ";I,N$(I)
  68. 1060 NEXT  I
  69. 1070 PRINT :PRINT :PRINT :INPUT "ENTER COUNTRY ";R
  70. 1080 IF R<1 OR R>10 THEN 1030
  71. 1085 CLS:PRINT "REVIEW OF ALLY DEFENSES IN ";N$(R):PRINT STRING$(39,"=")
  72. 1090 PRINT "DEFENSE";TAB(10);"QUANTITY";TAB(25);"LOCATION"
  73. 1100 PRINT STRING$(40,SX$)
  74. 1110 FOR X=1 TO 5
  75. 1120 PRINT D$(X);TAB(10);A(R,X);TAB(25);L$(A(R,X+5))+S$
  76. 1130 NEXT X
  77. 1140 PRINT :PRINT :INPUT "HIT ENTER TO CONTINUE ";Q$
  78. 1150 GOTO 330
  79. 2000 REM======================================================================
  80. 2010 REM                        TRANSPORT DEFENSES
  81. 2020 REM======================================================================
  82. 2030 CLS:COLOR 12,7:PRINT TAB(35);"LIST OF COUNTRIES":PRINT :PRINT :PRINT :PRINT
  83. 2040 FOR I=1 TO 10
  84. 2050 PRINT "    ";I,N$(I)
  85. 2060 NEXT I
  86. 2070 PRINT :PRINT :PRINT :INPUT "ENTER COUNTRY   ( FROM,TO )";F,T
  87. 2080 IF F<1 OR F>10 OR T<1 OR F>10 THEN 2030
  88. 2090 CLS:PRINT TAB(35);"LIST OF DEFENSES ":PRINT :PRINT :PRINT :PRINT
  89. 2100 FOR I=1 TO 5
  90. 2110 PRINT I,D$(I)
  91. 2120 NEXT I
  92. 2130 PRINT :PRINT :PRINT :PRINT :PRINT :PRINT
  93. 2140 INPUT "WHICH DEFENSE DO YOU WANT TO TRANSPORT ";D
  94. 2150 IF D<1 OR D>5 THEN 2090
  95. 2160 INPUT "QUANTITY TO TRANSPORT ";Q
  96. 2170 IF Q>A(F,D) THEN PRINT "YOU ONLY HAVE ";A(F,D);" IN ";N$(F):GOTO 2160
  97. 2180 A(T,D)=A(T,D)+Q :A(F,D)=A(F,D)-Q
  98. 2190 CLS:PRINT "WHICH SECTOR "
  99. 2200 FOR I= 1 TO 4 :PRINT I,L$(I) :NEXT I
  100. 2210 PRINT :PRINT :PRINT :INPUT L
  101. 2220 IF L<1 OR L>4 THEN 2190
  102. 2230 A(T,D+5)=L
  103. 2240 IF INT(RND*100)>25 THEN 2260
  104. 2250 GOSUB 7200
  105. 2260 PRINT :PRINT :PRINT :INPUT "HIT ENTER TO CONTINUE ";Q$ :GOTO 330
  106. 2270 REM=======================================================================
  107. 3000 REM                        GLOBAL REPORT
  108. 3010 REM=======================================================================
  109. 3020 CLS:COLOR 7,0:PRINT :PRINT :PRINT TAB(15);"GLOBAL REPORT"
  110. 3024 PRINT STRING$(40,"=")
  111. 3025 PRINT TAB(15);"TROOPS";TAB(30);"ALLIES "
  112. 3030 PRINT TAB(10);"ALLIES ";TAB(20);"ENEMY ";TAB(30)"POSSESSION"
  113. 3040 PRINT STRING$(40,"=")
  114. 3050 FOR I=1 TO 10
  115. 3060 PRINT N$(I);TAB(12);A(I,1);TAB(21);C(I,1);
  116. 3070 K2=0:FOR J=1 TO 5 : IF C(I,J)<>0 THEN K2=K2+1
  117. 3080 NEXT J
  118. 3090 IF K2=0 THEN PRINT TAB(33); "YES"
  119. 3091 IF K2<>0 THEN PRINT TAB(33);"NO"
  120. 3100 NEXT I
  121. 3110 PRINT :PRINT :PRINT :INPUT "HIT ENTER TO CONTINUE";Q$ :GOTO 330
  122. 3120 REM======================================================================
  123. 4000 REM                        SPY MISSION
  124. 4010 REM======================================================================
  125. 4020 CLS:COLOR 12,7:PRINT TAB(20) "SPY MISSION OVER ":PRINT :PRINT
  126. 4030 FOR I= 1 TO 10
  127. 4040 PRINT I,N$(I)
  128. 4050 NEXT I
  129. 4060 PRINT :PRINT :INPUT "WHICH COUNTRIES  (FROM,TO) ";F,T
  130. 4070 IF A(F,2)<10 THEN PRINT "YOU DONT HAVE ENEOUGH PLANES IN ";N$(F): INPUT "HIT ENTER TO CONTINUE ";Q$ : GOTO 330
  131. 4080 REM----------------------------------------
  132. 4090 A(F,2)=A(F,2)-10
  133. 4100 CLS:PRINT :PRINT :PRINT TAB(20);"SPY MISSION REPORT OF " ;N$(T)
  134. 4110 PRINT STRING$(40,"=")
  135. 4120 IF INT(RND*100)<26 THEN PRINT "ALL PLANES LOST TO AIR DEFENSES OF ";N$(T):INPUT "HIT ENTER TO CONTINUE ";Q$:GOTO 330
  136. 4130 PRINT "DEFENSE","QUANTITY","LOCATION"
  137. 4140 PRINT STRING$(40,SX$)
  138. 4150 FOR X=1 TO 5
  139. 4160 XP=INT(RND*100)
  140. 4170 IF XP<30 THEN GOTO 4230
  141. 4180 PRINT D$(X),C(T,X);
  142. 4190 K1=X+5
  143. 4200 IF C(T,K1)=0 THEN 4230
  144. 4210 K2=C(T,K1)
  145. 4220 PRINT TAB(34);L$(K2)
  146. 4230 NEXT X
  147. 4240 PRINT :PRINT :PRINT :INPUT "HIT ENTER TO CONTINUE ";Q$:GOTO 330
  148. 4250 REM=======================================================================
  149. 5000 REM=======================================================================
  150. 5010 REM                        ATTACK ALGORITHMS
  151. 5020 REM=======================================================================
  152. 5030 REM ATTACKER:       1. TROOPS  2.PLANES  3.ARTILLARY   4.TANKS  5.MISSLES
  153. 5040 REM-----------------------------------------------------------------
  154. 5050 REM DEFENDER:   !             !         !            !         !
  155. 5060 REM 1.TROOPS    !    0.9      !   200   !   75       !   100   !   0
  156. 5070 REM 2.PLANES    !    .001     !   1.1   !   .01      !   .01   !   .5
  157. 5080 REM 3.ARTILLARY !    .01      !   5     !    1       !   1.3   !   2
  158. 5090 REM 4.TANKS     !    .005     !   3     !    1       !   1.1   !   2
  159. 5100 REM 5.MISSLES   !    .001     !   1     !    .25     !   .3    !   1
  160. 5110 REM-----------------------------------------------------------------------
  161. 5220 REM-----------------------------------------------------------------------
  162. 5225 T1=0:T2=0
  163. 5230 FOR IC=1 TO 10
  164. 5240 FOR J=1 TO 5:IF A(IC,J)>0 THEN T1=1
  165. 5250 IF C(IC,J)>0 THEN T2=1
  166. 5260 NEXT J
  167. 5270 IF T1=0 OR T1=0 THEN
  168. 5280 FOR ID=1 TO 5: FOR IA=1 TO 5:DA(IA,ID)=0:DC(IA,ID)=0:NEXT IA:NEXT ID
  169. 5290 REM---------------------------------------------------------------------
  170. 5300 FOR ID=1 TO 5
  171. 5310 TA(ID)=0 :TC(ID)=0
  172. 5320 REM-------------------------------------------CALCULATE MAXIMUM CASUALTIES
  173. 5330 FOR IA=1 TO 5
  174. 5340 DA(ID,IA)=INT(WT(IA,ID)*RND*C(IC,IA))
  175. 5350 IF A(IC,ID)<=0 THEN DA(ID,IA)=0
  176. 5360 TA(ID)=TA(ID)+DA(ID,IA)
  177. 5370 DC(ID,IA)=INT(WT(IA,ID)*RND*A(IC,IA))
  178. 5380 IF C(IC,ID)<=0 THEN DC(ID,IA)=0
  179. 5390 TC(ID)=TC(ID)+DC(ID,IA)
  180. 5400 REM----------------------------------RESTRICT CASUALTIES TO EXISTING #S
  181. 5410 IF TA(ID)>=A(IC,ID) THEN TA(ID)=A(IC,ID)
  182. 5420 IF TC(ID)>=C(IC,ID) THEN TC(ID)=C(IC,ID)
  183. 5430 LA(IC,ID)=TA(ID): LC(IC,ID)=TC(ID)
  184. 5440 NEXT IA
  185. 5450 NEXT ID
  186. 5460 REM-----------------------------------PRINT LOSSES
  187. 5465 IX=IC+2
  188. 5466 IF IX=7 THEN IX=2
  189. 5470 COLOR IX,7:CLS
  190. 5480 PRINT "BATTLE FOUGHT IN ";N$(IC)
  191. 5490 PRINT STRING$(40,"=")
  192. 5500 PRINT"ALLIES CASUALTIES:"
  193. 5520 PRINT TAB(10) ;"PREVIOUS  LOSSES    PRESENT"
  194. 5530 PRINT STRING$(39,"-")
  195. 5535 SUMX=0
  196. 5540 FOR ID=1 TO 5
  197. 5550 X=A(IC,ID) :A(IC,ID)=X-LA(IC,ID)
  198. 5560 PRINT D$(ID);TAB(10);X;TAB(20);LA(IC,ID);TAB(30);A(IC,ID)
  199. 5564 SUMX=SUMX+LA(IC,ID)
  200. 5565 NEXT ID
  201. 5570 PRINT STRING$(40,"=")
  202. 5580 PRINT :PRINT"ENEMY CASUALTIES:"
  203. 5600 PRINT TAB(10) ;"PREVIOUS  LOSSES    PRESENT"
  204. 5610 PRINT STRING$(39,"-")
  205. 5620 FOR ID=1 TO 5
  206. 5630 X=C(IC,ID) :C(IC,ID)=X-LC(IC,ID)
  207. 5635 SUMX=SUMX+LC(IC,ID)
  208. 5640 PRINT D$(ID);TAB(10);X;TAB(20);LC(IC,ID);TAB(30);C(IC,ID)
  209. 5645 NEXT ID
  210. 5646 IF IC<>10 THEN 5650
  211. 5647 FOR J=1 TO 1800:NEXT J
  212. 5650 IF SUMX=0 THEN 5660
  213. 5658 INPUT  "HIT ENTER TO CONTINUE ";Q$
  214. 5660 NEXT IC
  215. 5670 GOTO 330
  216. 7200 REM-----------------------------------------TRANSPORT LOSS SUBROUTINE
  217. 7210 R=INT(100*RND(RX))+1
  218. 7220 X2=INT(RND(RX)*10)+2
  219. 7230 IF D=1 THEN X2=INT(100*RND(RX))+2
  220. 7240 IF A(T,D)<=X2 THEN X2=A(T,D)
  221. 7250 A(T,D)=A(T,D)-X2
  222. 7260 IF R<33 THEN PRINT "GURELLA FORCE ATTACK ON THE ";L$(A(T,D+5))+S$:GOTO 7290
  223. 7270 IF R<66 THEN PRINT "TRANSPORT SHIP SUNK AT SEA ":GOTO 7290
  224. 7280 PRINT "AMBUSH DURING TRANSPORT "
  225. 7290 PRINT " YOU JUST LOST ";X2;D$(D)
  226. 7300 PRINT " TOTAL ARRIVED IN ";N$(T); " = ";A(T,D)
  227. 7310 RETURN
  228. 7380 REM=====================================================================
  229.